/*
 * Copyright (c) 2012 SUBSECRETARIA DEFENSORIA DEL ESPACIO PUBLICO - SDEP.
 * All Rights Reserved.
 * This software is the confidential and proprietary information of SDEP
 * Developed By CONSTULT-SOFT S.A, Development Team 2012.
 *
 */
package co.gov.medellin.sdep.sisdep.domain;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import co.gov.medellin.sdep.sisdep.common.AppConstants;
import co.gov.medellin.sdep.sisdep.gestion.exception.SolicitudException;
import co.gov.medellin.sdep.sisdep.model.FeriaCritValoracion;
import co.gov.medellin.sdep.sisdep.regulacion.exception.FeriaCritValoracionException;
import co.gov.medellin.sdep.sisdep.regulacion.exception.FeriaCritValoracionRuntimeException;
import co.gov.medellin.sdep.sisdep.regulacion.service.IFeriaCritValoracionService;

/**
 * @author Usuario
 * 
 */
public class FeriaCritValoracionController extends SolicitudBaseController implements
		Serializable {

	/**
	 * generated serial version
	 */
	private static final long serialVersionUID = -3285110767384990403L;

	/**
	 * Constructor por defecto, inicializa los elemento basicos del Controlador
	 */
	public FeriaCritValoracionController() {
		this.feriaCritValoracionListModel = new ListDataModel();
	}

	/** bean para el manejo del formulario de busqueda FeriaCritValoracion */
	private FeriaCritValoracion feriaCritValoracionSearch = new FeriaCritValoracion();

	/** Objeto contenedor del listado de FeriaCritValoracion luego de una consulta. */
	private transient DataModel feriaCritValoracionListModel;

	/** bean para el manejo del formulario de creacion/edicion. FeriaCritValoracion */
	public FeriaCritValoracion feriaCritValoracion = new FeriaCritValoracion();	

	/** instancia de servicio feriaCritValoracionService */
	private IFeriaCritValoracionService feriaCritValoracionService;

	// --------------------------------------------------------------------
	// --- metodos para atender acciones init()
	// --------------------------------------------------------------------

	
	public String initState() throws SolicitudException, FeriaCritValoracionException {
		Map params = getExternalContext().getRequestParameterMap();
		Long solicitudId = new Long((String) params.get("solicitudId"));
		Long feriaId = new Long((String) params.get("feriaId"));
		this.solicitudOrigenRedirectPage = (String) params.get("solicitudOrigenRedirectPage");
		this.solicitudDestinoRedirectPage = (String) params.get("solicitudDestinoRedirectPage");
		//cleanSearchValues();
		//this.solicitud = getSolicitudService().get(solicitudId.longValue());
		//this.evento = getEventoService().getEventoRelatedBy(solicitudId.longValue());
		this.feriaCritValoracion = getFeriaCritValoracionService().getFeriaCritValoracionRelatedBy(feriaId.longValue());
		if(feriaId != null && this.feriaCritValoracion == null){
			this.feriaCritValoracion = new FeriaCritValoracion();
			//cleanValues();
		}
		this.feriaCritValoracion.setIdFeriaArtesanal(feriaId);
		return solicitudOrigenRedirectPage;
	}

	/**
	 * 
	 * @return String
	 */
	public String searchFeriaCritValoracionByKey() {
		String msg = "";
		try {
			List valores = null;
			//valores = getFeriaCritValoracionService().load(1, 10,
			//		this.feriaCritValoracionSearch);
			valores = getFeriaCritValoracionService().load(1, 10,
					this.feriaCritValoracionSearch);
			this.feriaCritValoracionListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaCritValoracionListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaCritValoracionListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.FERIACRITVALORACION_SEARCH_VIEW;
	}
	
	public int searchFeriaCritValoracionByKey1(Long idFeriaArtesanal,IFeriaCritValoracionService service ) {
		String msg = "";
		int intRdo=0;
		try {
			List valores = null;
			FeriaCritValoracion feriaCritValoracionSearch1 = new FeriaCritValoracion();
			feriaCritValoracionSearch1.setIdFeriaArtesanal(idFeriaArtesanal);
			setFeriaCritValoracionService(service);		
			valores = getFeriaCritValoracionService().load(1, 10,
					feriaCritValoracionSearch1);
			this.feriaCritValoracionListModel.setWrappedData(valores);
			if(valores !=null)
				intRdo= valores.size();
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaCritValoracionListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaCritValoracionListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
	//	((MessageModalWindowController) getBean("messageController"))
	//			.setSuccessMessage(msg, null, null);
		return intRdo;
	}

	public String loadAllFeriaCritValoracion() {
		String msg = "";
		try {
			List valores = null;
			valores = getFeriaCritValoracionService().cargarCriterios(1, 10,
					this.feriaCritValoracionSearch);
			this.feriaCritValoracionListModel.setWrappedData(valores);
		} catch (Exception e) {
			msg = e.getMessage();
			e.printStackTrace(System.err);
		}
		if (this.feriaCritValoracionListModel.getWrappedData() == null) {
			msg = AppConstants.NO_RECORDS_FOUND;
		} else {
			if (((List) this.feriaCritValoracionListModel.getWrappedData()).isEmpty()) {
				msg = AppConstants.NO_RECORDS_FOUND;
			}
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage(msg, null, null);
		return AppConstants.FERIACRITVALORACION_SEARCH_VIEW;
	}
	/**
	 * 
	 * @return
	 */
	public String create() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.feriaCritValoracion.getId().longValue() == 0L) {
				if(feriaCritValoracion.getIdCriterioStr() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterioStr()));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio1Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio1Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion1())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion1())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio2Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio2Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion2())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion2())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio3Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio3Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion3())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion3())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}				
				if(feriaCritValoracion.getIdCriterio4Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio4Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion4())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion4())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}				
				msg = AppConstants.SUCCESS_CREATE;
			}
		} catch (FeriaCritValoracionException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (FeriaCritValoracionRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- Feria Criterios de Valoraci\u00F3n " + msg, null, null);
		//return AppConstants.FERIACRITVALORACION_SEARCH_VIEW;
		return this.solicitudDestinoRedirectPage;
	}
	
		/**
	 * 
	 * @return
	 */
	public String update() {
		String msg = AppConstants.DEFAULT_ERROR;
		try {
			if (this.feriaCritValoracion.getId() == null) {
				if(feriaCritValoracion.getIdCriterioStr() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterioStr()));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio1Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio1Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion1())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion1())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio2Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio2Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion2())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion2())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio3Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio3Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion3())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion3())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}				
				if(feriaCritValoracion.getIdCriterio4Str() != null){
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio4Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion4())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion4())));
					getFeriaCritValoracionService().insert(this.feriaCritValoracion);
				}				
				msg = AppConstants.SUCCESS_CREATE;
			}			
			
			if (this.feriaCritValoracion.getId() != null) {
				getFeriaCritValoracionService().update(this.feriaCritValoracion);

				if(feriaCritValoracion.getIdCriterio1Str() != null){
					feriaCritValoracion.setId(feriaCritValoracion.getId1());
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio1Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion1())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion1())));
					getFeriaCritValoracionService().update(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio2Str() != null){
					feriaCritValoracion.setId(feriaCritValoracion.getId2());
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio2Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion2())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion2())));
					getFeriaCritValoracionService().update(this.feriaCritValoracion);
				}
				if(feriaCritValoracion.getIdCriterio3Str() != null){
					feriaCritValoracion.setId(feriaCritValoracion.getId3());
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio3Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion3())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion3())));
					getFeriaCritValoracionService().update(this.feriaCritValoracion);
				}				
				if(feriaCritValoracion.getIdCriterio4Str() != null){
					feriaCritValoracion.setId(feriaCritValoracion.getId4());
					feriaCritValoracion.setIdCriterio(new Long(feriaCritValoracion.getIdCriterio4Str()));
					feriaCritValoracion.setValoracion(((feriaCritValoracion.getValoracion4())));
					feriaCritValoracion.setObservacion(((feriaCritValoracion.getObservacion4())));
					getFeriaCritValoracionService().update(this.feriaCritValoracion);
				}				

				msg = AppConstants.SUCCESS_UPDATE;
			}
		} catch (FeriaCritValoracionException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		} catch (FeriaCritValoracionRuntimeException e) {
			msg = e.getEndUserMessage();
			e.printStackTrace(System.err);
		}
		((MessageModalWindowController) getBean("messageController"))
				.setSuccessMessage("- Feria Criterios de Valoraci\u00F3n " + msg, null, null);
		return this.solicitudDestinoRedirectPage;
	}
	
		// --------------------------------------------------------------------
	// --- metodos para atender acciones end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public String createFeriaCritValoracion() {
		feriaCritValoracion = new FeriaCritValoracion();
		feriaCritValoracion.setId(new Long(0L));
		feriaCritValoracion.setCodigo("");
		//this.loadAllFeriaCritValoracion();
		//feriaCritValoracion.setValor("");
		//feriaCritValoracion.setActivo("N");
		this.solicitudDestinoRedirectPage = AppConstants.FERIACRITVALORACION_SEARCH_VIEW;
		return AppConstants.FERIACRITVALORACION_CREATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String updateFeriaCritValoracion() {
		Map params = getExternalContext().getRequestParameterMap();
		String feriaCritValoracionDataIndex = (String) params
				.get("feriaCritValoracionDataIndex");
		FeriaCritValoracion feriaCritValoracionTemp;
		this.feriaCritValoracion = (FeriaCritValoracion) ((List) this.feriaCritValoracionListModel
				.getWrappedData())
				.get(Integer.parseInt("0"));
		if(this.feriaCritValoracionListModel.getRowCount()>1){
			    feriaCritValoracionTemp = (FeriaCritValoracion) ((List) this.feriaCritValoracionListModel
				.getWrappedData())
				.get(Integer.parseInt("1"));
			    this.feriaCritValoracion.setId1(feriaCritValoracionTemp.getId());
			    this.feriaCritValoracion.setIdCriterio1(feriaCritValoracionTemp.getIdCriterio());
			    this.feriaCritValoracion.setIdCriterio1Str(feriaCritValoracionTemp.getIdCriterio().toString());
			    this.feriaCritValoracion.setValoracion1(feriaCritValoracionTemp.getValoracion());
			    this.feriaCritValoracion.setObservacion1(feriaCritValoracionTemp.getObservacion());
		}
		
		if(this.feriaCritValoracionListModel.getRowCount()>2){
			feriaCritValoracionTemp = (FeriaCritValoracion) ((List) this.feriaCritValoracionListModel
				.getWrappedData())
				.get(Integer.parseInt("2"));
			this.feriaCritValoracion.setId2(feriaCritValoracionTemp.getId());
			this.feriaCritValoracion.setIdCriterio2(feriaCritValoracionTemp.getIdCriterio());
		    this.feriaCritValoracion.setIdCriterio2Str(feriaCritValoracionTemp.getIdCriterio().toString());
		    this.feriaCritValoracion.setValoracion2(feriaCritValoracionTemp.getValoracion());
		    this.feriaCritValoracion.setObservacion2(feriaCritValoracionTemp.getObservacion());
		}
		if(this.feriaCritValoracionListModel.getRowCount()>3){
			feriaCritValoracionTemp = (FeriaCritValoracion) ((List) this.feriaCritValoracionListModel
				.getWrappedData())
				.get(Integer.parseInt("3"));
			this.feriaCritValoracion.setId3(feriaCritValoracionTemp.getId());
			this.feriaCritValoracion.setIdCriterio3(feriaCritValoracionTemp.getIdCriterio());
		    this.feriaCritValoracion.setIdCriterio3Str(feriaCritValoracionTemp.getIdCriterio().toString());
		    this.feriaCritValoracion.setValoracion3(feriaCritValoracionTemp.getValoracion());
		    this.feriaCritValoracion.setObservacion3(feriaCritValoracionTemp.getObservacion());
		}
		if(this.feriaCritValoracionListModel.getRowCount()>4){
			feriaCritValoracionTemp = (FeriaCritValoracion) ((List) this.feriaCritValoracionListModel
				.getWrappedData())
				.get(Integer.parseInt("4"));
			this.feriaCritValoracion.setId4(feriaCritValoracionTemp.getId());
			this.feriaCritValoracion.setIdCriterio4(feriaCritValoracionTemp.getIdCriterio());
		    this.feriaCritValoracion.setIdCriterio4Str(feriaCritValoracionTemp.getIdCriterio().toString());
		    this.feriaCritValoracion.setValoracion4(feriaCritValoracionTemp.getValoracion());
		    this.feriaCritValoracion.setObservacion4(feriaCritValoracionTemp.getObservacion());			
		}
		return AppConstants.FERIACRITVALORACION_UPDATE_VIEW;
	}

	/**
	 * 
	 * @return
	 */
	public String cancelFeriaCritValoracion() {
		return AppConstants.FERIACRITVALORACION_SEARCH_VIEW;
	}
	/**
	 * 
	 * @return
	 */
	public String cancelFeriaCritValoracionOpcion() {
		return AppConstants.FERIACRITVALORACION_MENU_VIEW;
	}
	// --------------------------------------------------------------------
	// --- metodos para atender reglas de navegacion end()
	// --------------------------------------------------------------------

	// --------------------------------------------------------------------
	// --- getters and setters init()
	// --------------------------------------------------------------------

	/**
	 * 
	 */
	public FeriaCritValoracion getFeriaCritValoracionSearch() {
		return feriaCritValoracionSearch;
	}

	/**
	 * 
	 * @param feriaCritValoracionSearch
	 */
	public void setferiaCritValoracionSearch(FeriaCritValoracion feriaCritValoracionSearch) {
		this.feriaCritValoracionSearch = feriaCritValoracionSearch;
	}

	/**
	 * 
	 * @return
	 */
	public DataModel getferiaCritValoracionListModel() {
		return feriaCritValoracionListModel;
	}

	/**
	 * 
	 * @param feriaCritValoracionListModel
	 */
	public void setferiaCritValoracionListModel(DataModel feriaCritValoracionListModel) {
		this.feriaCritValoracionListModel = feriaCritValoracionListModel;
	}

	/**
	 * 
	 * @return
	 */
	public FeriaCritValoracion getFeriaCritValoracion() {
		return feriaCritValoracion;
	}

	/**
	 * 
	 * @param feriaCritValoracion
	 */

	public void setFeriaCritValoracion(FeriaCritValoracion feriaCritValoracion) {
		this.feriaCritValoracion = feriaCritValoracion;
	}	

	
	/**
	 * obtencion del servicio feriaCritValoracionService
	 * 
	 * @return
	 */
	public IFeriaCritValoracionService getFeriaCritValoracionService() {
		return feriaCritValoracionService;
	}

	/**
	 * establecimiento del servicio feriaCritValoracionService, la inyeccion de la
	 * dependencia la cubre SpringFramework
	 * 
	 * @param feriaCritValoracionService
	 */
	public void setFeriaCritValoracionService(
			IFeriaCritValoracionService feriaCritValoracionService) {
		this.feriaCritValoracionService = feriaCritValoracionService;
	}

	// --------------------------------------------------------------------
	// --- getters and setters end()
	// --------------------------------------------------------------------

}
